##Exercicio 8.1 Palmito Adulto ##Bruno Sandy

eutad = read.table("palmadulto.txt", header=T, sep="\t", dec=".", as.is=T)
getwd()
setwd("C:/Users/bruno/OneDrive/R")
eutad

#crie o objeto para guardar as distancias de cada individuo
dist=matrix(NA,ncol=102,nrow=102)
dist

#calcule a distancia observada entre cada individuo e guarde o resultado em dist
for(i in 101){
	for(j in (i+1):102)
		{
		difx2=(eutad$gx[i]-eutad$gx[j])^2
		dify2=(eutad$gy[i]-eutad$gy[j])^2
		dist[i,j]<- sqrt(difx2 + dify2)
		dist[j,i]<- sqrt(difx2 + dify2)
	}
}

##Verifique o objeto dist e calcule o chmada de distancia media do vizinho mais proximo MNN
(nn <- apply(dist,1, min, na.rm=TRUE))
(mnn <- mean(nn))

##Simulando
At agora calculamos o valor esperado da distncia media do vizinho mais proximo
Vamos seguir o passo-a-passo:

#8.1.5 Crie um vetor RESULTADO com 1000 NAs para guardar os valores de cada simulao
resultado <- rep(NA,1000)
resultado

#8.1.6 Guarde o valor observado na primeira posio de RESULTADO
resultado[1]=mnn

#8.1.7 Crie um ciclo com contador (k) que vai de 2 a 1000
for(k in 2:1000){
	xsim=runif(100,0,320) #aqui sorteia 100 valores que vai de 0 a 320
	ysim=runif(100,0,320) # o mesmo para o y
	dist.xy=matrix(NA, ncol=100, nrow=100) #aqui criamos a matriz 100x100 xy para guardar os resultados

	for(i in 1:99){ #aqui calcularemos a distancia para cada vizinho
		difx2.sim=(xsim[i]-xsim[k])^2
		dify2.sim=(ysim[i]-ysim[k])^2
		distsim[k,i]=sqrt(difx2.sim+dify2.sim)
		distsim[i,k]=sqrt(difx2.sim+dify2.sim)
		}
	} 
	(dist.minima <- apply(dist.xy,1,min,na.rm=TRUE)) #aqui teremos a distancia minima para cada palmito e me remova todos os NAs
	mean.dist.xy <- mean(dist.minima) #aqui teremos o valor da mdia do vizinho mais prximo levando como base a matrix 100x100 xy
	resultado[k] <- mean.dist.xy #aqui guardamos o valor da mdia no vetor chamado resultado[k] como dito no enunciado
}
#8.1.9 Aps fechado o ciclo, faa um histograma dos valores SIMULADOS
e coloque uma RED LINE vertical na posio do valor OBSERVADO.

hist(resultado)
abline(vector=resultado[1], col="red", lty=2, lwd=2)

##8.1.10. Calcule a probabilidade de uma distribuio espacial ALEATORIA gera valores
#iguais ou mais extremos que o valor MNN obsevado.
#Segundo o tutorial, para fazermos esta operao, usaremos a funo quantile e descobrir o p-value.

quantile(resultado, prob=c(0.05,0.95)) #aqui obtemos o intervalo de confiana

##Agora precisamos calcular o p-value
##agora vamos voltar no tutorial das mandibulas para relembrar os comandos...loading...

unicaudal <- sum(resultado=resultado[1]/length(resultado))
bicaudal <- sum(resultado>=resultado[1])


####Exercicio 2 - SIMULANDO DADOS DE UMA REGRESSO LINEAR####
read.table("animais.txt", header=T,sep=";",as.is=TRUE)
animals <- read.table("animais.txt", header=T,sep=";",dec=",", as.is=TRUE)
animals
#o arquivo animals contm NAs
plot(log(animals$brain)~ log(animals$body)) #aqui plotamos um grfico log de brain/body
# a distribuio dos dados parece linear com o log
sum(is.na(animals)) #aqui eu quero ver quantos NAs tem no conjunto de dados.
animals <- na.omit(animals) #aqui retirou o NAs do conjunto de dados.
animals
modelo <- lm(log(animals$brain)~log(animals$body)) ##aqui criamos um modelo linear
modelo
summary(modelo)
coef(modelo) #aqui  o valor da inclinao ou seja, o valor do intercepto
residuo <- rep(NA, 1000) #objeto com 1000 NAs
residuo
residuo.1 = coef(modelo) #aqui colocamos a inclinao na primeira posio do residuo
residuo.1

##8.2.4 Abra um ciclo com o FOR de 2 a 1000
for(i in 2:1000){ 
	sim.brain <- sample(animals$brain) #aqui vamos bagunar os dados de brain
	coef.sim <- coef(lm(log(animals$brain)~log(animals$body)))
	resultado <- coef.sim #aqui guardamos no vetor resultado
}
###8.2.8 Faa o histograma dos valores simulados e compare
# com o valor da inclinao da relao
hist(residuo.1)
abline(v=residuo.1, col="purple", lty=2, lwd=2)


##8.2.9 Calcule o p-value 
unicaudal <- sum(residuo>=residuo.1/length(residuo)
bicaldal <- unicaudal*2 
